/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.saber.certificacao.modelos.validadores;

import br.com.saber.certificacao.ejbs.stateless.interfaces.TutorialBeanLocal;
import br.com.saber.certificacao.modelos.Tutorial;
import br.com.saber.certificacao.modelos.validadores.exceptions.TutorialException;
import br.com.saber.certificacao.modelos.validadores.exceptions.generica.ValidacaoExcecao;
import br.com.saber.certificacao.modelos.validadores.interfaces.ValidadorInterface;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.validator.UrlValidator;

/**
 *
 * @author Guilherme
 */
public class TutorialValidador implements ValidadorInterface<Tutorial, TutorialBeanLocal> {

    @Override
    public void validar(Tutorial entidade, TutorialBeanLocal bean, Object object) throws ValidacaoExcecao {
        if(StringUtils.isBlank(entidade.getTituloTutorial())){
            lancarException("tutTituloNull", "Titulo");
        }
        if(entidade.getTituloTutorial().length() > Tutorial.LIMIT_CARACTERES_TITULO){
            lancarException("tutTituloLong", "Titulo");
        }
        if(StringUtils.isBlank(entidade.getDescricao())){
            lancarException("tutDescNull", "Descrição");
        }
        if(entidade.getDescricao().length() > Tutorial.LIMIT_CARACTERES_DESCRICAO){
            lancarException("tutDescLong", "Descrição");
        }
        if(entidade.getUsuario() == null){
            lancarException("tutUserNull", "Usuário");
        }
        if(StringUtils.isBlank(entidade.getUrl())){
            lancarException("tutUrlNull", "URL");
        }
        if(entidade.getUrl().length() > Tutorial.LIMIT_CARACTERES_URL){
            lancarException("tutUrlLong", "URL");
        }
        if(!isUrlValida(entidade.getUrl())){
            lancarException("tutUrlInvalida", "URL");
        }
        if(entidade.getDataCadastro() == null){
            lancarException("tutDataNull", "Data");
        }
        if(entidade.getIndice() == null){
            lancarException("tutIndiceNull", "Indice");
        }
        if(entidade.getIndice().length() > Tutorial.LIMIT_CARACTERES_INDICE){
            lancarException("tutIndiceLong", "Indice");
        }        
    }

    private void lancarException(String msg, String atributo) {
        TutorialException ex = new TutorialException(msg);
        ex.setAtributoName(atributo);
        throw ex;
    }
    
    private boolean isUrlValida(String url){
    String[] schemes = {"http","https"};
    UrlValidator urlValidator = new UrlValidator(schemes);
    return urlValidator.isValid(url);
    }
}
